// 每一个对象能访问哪些路由？
let roleList = {
  "平台管理员": [
    { path: "/dashboard" },       // 平台数据
    { path: "/admins" },          // 平台管理员管理
    { path: "/users" },           // 用户管理
    { path: "/shopsApply" },      // 门店申请管理==>店铺申请
    { path: "/shopsUsersApply" }, // 门店申请管理==>管理员申请
  ],
  "门店管理员": [
    { path: "/business" },        // 商家数据统计
    { path: "/shops" },           // 门店管理
    { path: "/goods" },           // 商品管理
    { path: "/services" },        // 服务管理
    { path: "/usersService" },    // 订单管理==>用户服务
    { path: "/goodsView" },       // 订单管理==>商品查看
  ]
};

/**
 *  role0 // 所有权限
 *  role1 // 没有操作日志权限
 *  role2 // 只有组织架构权限
 *  role3 // 只有日志权限
 *
 * -----------假设这是调用接口返回的权限列表-------------
 */
// url -----> admin、director、manager、staff

// getRoleJson接收的url是传过来的token
// （0、1）去匹配roleList
export const getRoleJson = url => {
  return new Promise(resolve => {
    return resolve(roleList[url] || roleList.admin);
  });
};

/**
 * 递归判断路由，删除没有的权限
 * @param {Array} tree // 系统所有路由树
 * @param {Array} roles // 后端返回的权限列表
 * @return Array
 */

export function _getRoleList(tree, roles) {
  let finalTree = [...tree];
  let fun = list => {
    for (let i = 0; i < list.length; i++) {
      let c = list[i];
      if (roles.findIndex(d => d.path == c.path) > -1 || c.hidden) {
        if (c.children && c.children.length) {
          fun(c.children);
        }
      } else {
        let {
          meta: { children }
        } = c;
        if (children && children.length) {
          let isHave = children.findIndex(e => roles.findIndex(f => f.path == e) > -1);
          // 如果不存在-删除，如果存在-继续递归
          if (isHave == -1) {
            list.splice(i, 1);
            i--;
          } else {
            if (c.children && c.children.length) {
              fun(c.children);
            }
          }
        } else {
          list.splice(i, 1);
          i--;
        }
      }
    }
  };
  fun(finalTree);
  return finalTree;
}
